/*
 * PistaDT.cpp - Grupo 5 - Prog. Avanzada 2011
 *
 *  Javier Dominguez - 4.901.161-6
 *  Marcelo Parada - 1.977.094-9
 *  Rodrigo Ruiz - 4.481.611-2
 *  Maximiliano Silvera - 4.106.938-6
 */

#include "PistaDT.h"

PistaDT::PistaDT()
{
	this->setArtistas(new ColConcrete<ArtistaDT*>());
}

PistaDT::PistaDT(int numero, string titulo, Tiempo *tiempo)
{
	this->setId(-1);

	this->setNumero(numero);

	this->setTitulo(titulo);

	this->setTiempo(tiempo);

	this->setArtistas(new ColConcrete<ArtistaDT*>());
}

PistaDT::PistaDT(int id, int numero, string titulo, Tiempo *tiempo)
{
	this->setId(id);

	this->setNumero(numero);

	this->setTitulo(titulo);

	this->setTiempo(tiempo);

	this->setArtistas(new ColConcrete<ArtistaDT*>());
}

AlbumDT *PistaDT::getAlbumDT() const
{
    return albumDT;
}

void PistaDT::setAlbumDT(AlbumDT *albumDT)
{
    this->albumDT = albumDT;
}

int PistaDT::getNumero() const
{
    return numero;
}

void PistaDT::setNumero(int numero)
{
    this->numero = numero;
}

int PistaDT::tipoTemaDT()
{
	return Pista::TIPO_TEMA;
}

bool PistaDT::same(ICollectible *icollectible)
{
	PistaDT *pistaDT = (PistaDT*) icollectible;

	return this->getTitulo().compare(pistaDT->getTitulo());
}

string PistaDT::toString()
{
	stringstream out;
	out << "El tema es una pista." << endl;
	out << "Id: " << this->getId() << endl;
	out << "Titulo: " << this->getTitulo() << endl;
	out << "Duracion: " << this->getTiempo()->toString() << endl;
	out << "Album: " << this->getAlbumDT()->toString();
	out << "Numero: " << this->getNumero();
	return out.str();
}

PistaDT::~PistaDT()
{
	delete albumDT;
}
